local voucherId=ARGV[1]
local userId=ARGV[2]
local orderId=ARGV[3]
--库存key
local voucherStockKey="skill:voucher:stock:id:"..voucherId
--订单key
local voucherOrderKey="skill:voucher:order:id:"..voucherId

-- 3.1.判断库存是否充足 get stockKey
if(tonumber(redis.call('get', voucherStockKey)) <= 0) then
    -- 3.2.库存不足，返回1
    return 1
end
-- 4.1判断是否下单
if (redis.call('sismember',voucherOrderKey,userId)==1) then
--   4.2 存在返回 2
    return 2
end

--5.执行下单业务
--5.1减库存
redis.call('decr',voucherStockKey)
--5.2 保存订单
redis.call('sadd', voucherOrderKey, userId)
-- 5.3 将订单信息添加到信息队列中
redis.call('xadd','stream.orders','*','userId',userId,'voucherId',voucherId,'id',orderId)
-- 5.4 操作成功 返回0
return 0
